package cn.zhuzicc.basic.jvm.t1;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zhaoxiang
 * @version 1.0
 * @description 演示堆内存溢出 java.lang.OutOfMemoryError: Java heap space
 * 堆内存设置指令：-Xmx8m
 * @Date 2021/9/19 14:58
 */
public class Demo1_5 {
    public static void main(String[] args) {
        int i = 0;
        try {
            /*
                List对象被while循环一直占用，所以不会被回收
                str对象被list对象占用（add操作），所以也不会被回收
                最终导致heap内存溢出
             */
            List<String> list = new ArrayList<>();
            String str = "hello";
            while (true) {
                list.add(str);
                str = str + str;
                i++;
            }
        } catch (Throwable e) {
            e.printStackTrace();
            System.out.println(i);
        }
    }
}
